草庐IT

java treeset 抛出 illegalArgumentException : key out of range

全部标签

c++ - 在抛出的异常中销毁临时字符串

考虑以下代码:std::stringmy_error_string="Someerrormessage";//...throwstd::runtime_error(std::string("Error:")+my_error_string);传递给runtime_error的字符串是字符串的operator+返回的临时字符串。假设此异常的处理方式如下:catch(conststd::runtime_error&e){std::coutstring的operator+返回的temporary什么时候销毁?语言规范对此有什么要说的吗?另外,假设runtime_error接受了一个const

c++ - 为什么要在枚举上抛出一个类?

只是想知道,为什么把一个类放在一个枚举上会更好当然扔类是更多的开销?例如enumMyException{except_a,except_b,except_c}voidfunctionf(){throwexcept_a;}intmain(intarc,char*argv[]){try{}catch(MyExceptione){switch(e){except_a:break;except_b:break;except_c:break;}}return0;}除了开销。我还需要为每个可能覆盖std::exception或其他东西的类声明一个类。更多代码、更大二进制文件……有什么好处?

c++ - 为什么在创建数组期间在 C++ 中抛出未捕获的异常时不调用析构函数?

classXX{public:staticunsigneds_cnt;XX(){++s_cnt;std::cout2)throwstd::exception();}//private:~XX(){std::cout输出:CXX1CXX2CXX3~XX~XXExc但是当我删除try-catch时,我看到:CXX1CXX2CXX3terminatecalledafterthrowinganinstanceof'std::exception'what():std::exceptionzsh:abort./a.out为什么C++在第一种情况下调用析构函数而在第二种情况下不调用?

C++ 异常在虚函数上抛出注释

我看到了下面的代码片段:classFoo{public:voidvirtualfunc()throw(int,float)=0;};classBar:publicFoo{public:voidvirtualfunc()throw(short);//line1:compileerror"//looserthrowspecifier"voidvirtualfunc()throw();//line2:cancompilevoidvirtualfunc()throw(float,int);//line3:cancompilevoidvirtualfunc()throw(float);//lin

c++ - 为什么我的程序在析构函数抛出异常时终止?

我不明白为什么如果有一个活跃的异常,那么如果再次引发异常,它会导致程序终止。有人可以解释一下吗? 最佳答案 它应该做什么?它不能“双重捕获”或任何东西,简单地忽略一个也没有意义。该标准规定,如果在堆栈展开期间,另一个异常逃逸,则应调用terminate。C++FAQ中有更多讨论.一种“解决方案”是将析构函数代码包装在try/catchblock中,并且不要让异常逃逸。另一个是提出某种自定义异常链接方案。您将执行上述操作,但不是忽略异常,而是将其附加到当前抛出的异常,并在捕获站点手动处理这两个异常。我认为最好的解决方案是尝试从析构函数

c++ - 使用异常抛出构造函数初始化对象的正确方法

这似乎是一个微不足道的问题,但我现在已经挂了几个小时(也许太多的Java扼杀了我的C++脑细胞)。我创建了一个具有以下构造函数的类(即没有默认构造函数)VACaptureSource::VACaptureSource(std::stringinputType,std::stringinputLocation){if(type==""||location==""){throwstd::invalid_argument("EmptytypeorlocationinVACaptureSource()");}type=inputType;location=inputLocation;//Ope

c++ - 为什么 std::sort 会在此代码上抛出段错误?

有人可以解释为什么下面的排序会导致段错误吗?这是g++(指针的排序vector)的已知错误吗?我正在使用g++4.5.2进行编译。#include#include#includeusingnamespacestd;typedefvectorA;boolface_cmp(constA*x,constA*y){returnx!=y;}intmain(intargc,char*argv[]){vectorvec;for(inti=0;i(i%100,i*i));}vector::iteratorit;sort(vec.begin(),vec.end(),face_cmp);returnEXI

c++ - 如果失败的析构函数不能抛出异常怎么办

我注意到您不能在析构函数中抛出异常。所以我的问题是如果析构函数失败我该怎么办。另一个问题是,在什么情况下析构函数可能会失败?非常感谢 最佳答案 忽略错误。如果类包装某种输出,并且析构函数刷新并关闭该输出,则析构函数可能“失败”。写入数据可能会失败。然后你的选择是终止程序,或者捕捉异常,忽略错误,然后返回。通常正确的设计是忽略它。在我的示例中,该类还应该有一个“close_and_flush”函数,如果用户想知道它是否成功,可以在对象销毁之前调用该函数。如果你的类的用户不关心操作是否失败,那么你也不关心,你可以安全地抑制异常。用户可以

应用程序崩溃抛出了拒绝权限的例外:阅读com.android.providers.media.mediaprovider

我正在开发一个需要读取和写入外部存储的应用程序的应用程序。我已经在清单文件以及我的Java活动文件中编写所有权限permissiondenial:readingcom.android.providers.media.MediaProvider清单文件Java文件publicclassFragment_twoextendsFragment{privateRecyclerViewrecyclerView2;privateListmodelList;privatemyAdapter2adapter;privateMenuItemmenu;publicFragment_two(){}@Override

c++ - mudflap 在使用 new() 运算符分配内存时抛出核心转储

这是我的代码片段。intmain(){int*var=newint(6);cout当使用mudflapas编译时$exportMUDFLAP_OPTIONS="-print-leaks-mode-check"$g++test.cpp-fmudflap-lmudflap$./a.outSegmentationfault(coredumped)但是在没有mudflap选项的情况下编译时它不会抛出核心转储。我是mudflap的新手。请告诉我是否以错误的方式使用挡泥板。仅供引用:$uname-aLinuxlocalhost.localdomain2.6.18-308.4.1.el5#1SMPW